package com.qm.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @Author: wb
 * @CreateTime: 2022-11-18  08:42
 * @Description: 自定义的注解
 */
/*@Retention 在什么时候生效
1）SOURCE：在源文件中有效，被编译器丢弃。
2）CLASS：在编译器生成的字节码文件中有效，但在运行时会被处理类文件的 JVM 丢弃。
3）RUNTIME：在运行时有效。这也是注解生命周期中最常用的一种策略，它允许程序通过反射的方式访问
*/
@Retention(RetentionPolicy.RUNTIME)
/*@Target 表示注解可以放置到哪里上
 * 1）TYPE：用于类、接口、注解、枚举 *
 * 2）FIELD：用于字段（类的成员变量），或者枚举常量 *
 * 3）METHOD：用于方法 *
 * 4）PARAMETER：用于普通方法或者构造方法的参数 *
 * 5）CONSTRUCTOR：用于构造方法 *
 * 6）LOCAL_VARIABLE：用于变量 *
 * 7）ANNOTATION_TYPE：用于注解 *
 * 8）PACKAGE：用于包 *
 * 9）TYPE_PARAMETER：用于泛型参数 *
 * 10）TYPE_USE：用于声明语句、泛型或者强制转换语句中的类型 *
 * 11）MODULE：用于模块  */
@Target(ElementType.TYPE)
public @interface MyAnno {
//    public String value();
    public String value() default "我是默认值";
}
